// package com.tanhua.manage.service;
//
// import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
// import com.tanhua.manage.domain.AnalysisByDay;
// import com.tanhua.manage.domain.StatisticsVo;
// import com.tanhua.manage.mapper.AnalysisByDayMapper;
// import com.tanhua.manage.mapper.LogMapper;
// import com.tanhua.manage.utils.ComputeUtil;
// import org.apache.dubbo.monitor.dubbo.Statistics;
// import org.checkerframework.checker.units.qual.A;
// import org.springframework.beans.factory.annotation.Autowired;
// import org.springframework.http.ResponseEntity;
// import org.springframework.stereotype.Service;
//
// import javax.xml.crypto.Data;
// import java.text.SimpleDateFormat;
// import java.util.*;
//
// @Service
// public class StatisticsService extends ServiceImpl<AnalysisByDayMapper, AnalysisByDay> {
//
//     @Autowired
//     private AnalysisByDayMapper analysisByDayMapper;
//     @Autowired
//     private LogMapper logMapper;
//
//     /*
//     * 统计
//     * */
//     public ResponseEntity<Object> Statistics(Long sd, Long ed, String type) {
//
//         Date date = new Date(sd);
//         Date date2 = new Date(ed);
//         String startTime = new SimpleDateFormat("yyyy-MM-dd").format(date);
//         String endTime = new SimpleDateFormat("yyyy-MM-dd").format(date2);
//
//         List<AnalysisByDay> toYearAnalysisByDayList = analysisByDayMapper.statistics(startTime, endTime);
//
//         String[] split = startTime.split("-");
//         Integer year = Integer.valueOf(split[0]) - 1;
//         startTime=year+"-"+split[1]+"-"+split[2];
//
//         String[] split1 = endTime.split("-");
//         Integer year1 = Integer.valueOf(split1[0]) - 1;
//         endTime=year1+"-"+split1[1]+"-"+split1[2];
//         List<AnalysisByDay> lastYearAnalysisByDayList=analysisByDayMapper.statistics(startTime,endTime);
//
//
//         ArrayList<StatisticsVo> thisYearList = new ArrayList<>();
//         ArrayList<StatisticsVo> lastYearList = new ArrayList<>();
//         for (AnalysisByDay analysisByDay : toYearAnalysisByDayList) {
//
//             if (analysisByDay!=null) {
//
//                     if(type.equals("101")){
//                         StatisticsVo statisticsVo = new StatisticsVo();
//
//                         statisticsVo.setTitle(new SimpleDateFormat("yyyy-MM-dd").format(analysisByDay.getRecordDate()));
//                         statisticsVo.setAmount(analysisByDay.getNumRegistered());
//                         thisYearList.add(statisticsVo);
//                     }else if(type.equals("102")){
//                         StatisticsVo statisticsVo = new StatisticsVo();
//                         statisticsVo.setTitle(new SimpleDateFormat("yyyy-MM-dd").format(analysisByDay.getRecordDate()));
//                         statisticsVo.setAmount(analysisByDay.getNumActive());
//                         thisYearList.add(statisticsVo);
//                     }else{
//                         Date created = analysisByDay.getRecordDate(); // 3.查询昨日新增、活跃数、登录数
//                         // 查询昨天的数据
//                         String today = new SimpleDateFormat("yyyy-MM-dd").format(created);
//                         String lastDay = ComputeUtil.offsetDay(created, -1);
//                        // AnalysisByDay recordYes = query().eq("record_date",lastDay).one();
//
//                             // 查询次日留存数
//                         Integer numRetention1d = analysisByDay.getNumRetention1d();
//                         StatisticsVo statisticsVo = new StatisticsVo();
//                             statisticsVo.setTitle(new SimpleDateFormat("yyyy-MM-dd").format(created));
//                             statisticsVo.setAmount(numRetention1d);
//                             thisYearList.add(statisticsVo);
//
//                     }
//                 }
//             }
//
//
//         for (AnalysisByDay analysisByDay : lastYearAnalysisByDayList) {
//
//             if (analysisByDay!=null) {
//                 if(type.equals("101")){
//                     StatisticsVo statisticsVo = new StatisticsVo();
//
//                     statisticsVo.setTitle(new SimpleDateFormat("yyyy-MM-dd").format(analysisByDay.getRecordDate()));
//                     statisticsVo.setAmount(analysisByDay.getNumRegistered());
//                     lastYearList.add(statisticsVo);
//                 }else if(type.equals("102")){
//                     StatisticsVo statisticsVo = new StatisticsVo();
//                     statisticsVo.setTitle(new SimpleDateFormat("yyyy-MM-dd").format(analysisByDay.getRecordDate()));
//                     statisticsVo.setAmount(analysisByDay.getNumActive());
//                     lastYearList.add(statisticsVo);
//                 }else{
//                     Date created = analysisByDay.getRecordDate(); // 3.查询昨日新增、活跃数、登录数
//                     // 查询昨天的数据
//                     String today = new SimpleDateFormat("yyyy-MM-dd").format(created);
//                     String lastDay = ComputeUtil.offsetDay(created, -1);
//                     //AnalysisByDay recordYes = query().eq("record_date", lastDay).one();
//
//                     // 查询次日留存数
//                     Integer numRetention1d = analysisByDay.getNumRetention1d();
//                     StatisticsVo statisticsVo = new StatisticsVo();
//                         statisticsVo.setTitle(new SimpleDateFormat("yyyy-MM-dd").format(created));
//                         statisticsVo.setAmount(numRetention1d);
//                         lastYearList.add(statisticsVo);
//
//                 }
//             }
//         }
//
//
//         StatisticsVo statisticsVo= new StatisticsVo();
//         statisticsVo.setTitle(year1+"-"+"02-29");
//         statisticsVo.setAmount(0);
//
//         StatisticsVo statisticsVo1= new StatisticsVo();
//         statisticsVo1.setTitle(year+"-"+"02-29");
//         statisticsVo1.setAmount(0);
//
//
//         if ((year+1)%4==0 &&split[1].equals("02")&&split1[1]. equals("03")|| year1%4==0&&split[1].equals("02")&&split1[1]. equals("03")) {
//             //以下是判断传过来额数据是否包含闰年
//             boolean a=false;
//             boolean b=false;
//
//             for (StatisticsVo statisticsV : thisYearList) {
//                 if (statisticsV.getTitle().endsWith("02-29")) {
//                     a=true;
//                     break;
//                 }
//             }
//
//             for (StatisticsVo statisticsVv : lastYearList) {
//                 if (b = statisticsVv.getTitle().endsWith("02-29")) {
//                     b=true;
//                     break;
//                 }
//             }
//
//
//             if(a){
//                 for (int i = 0; i < lastYearList.size(); i++) {
//                     StatisticsVo vo=lastYearList.get(i);
//                     if(vo.getTitle().endsWith("02-28")){
//                         lastYearList.add(i+1,statisticsVo);
//                     }
//                 }
//             }
//
//
//             if(b){
//                 for (int i = 0; i < thisYearList.size(); i++) {
//                     StatisticsVo vo=thisYearList.get(i);
//                     if(vo.getTitle().endsWith("02-28")){
//                         thisYearList.add(i+1,statisticsVo1);
//                     }
//                 }
//             }
//         }else {
//
//             if (thisYearList.size() != lastYearList.size()) {
//                 int count = thisYearList.size() != lastYearList.size() ? thisYearList.size() : lastYearList.size();
//                 for (int i = 0; i < count; i++) {
//                     if (i+1<=thisYearList.size()) {
//                         StatisticsVo thisVo = thisYearList.get(i);
//                         String[] thisSplit = thisVo.getTitle().split("-");
//                         Integer thisDayInteger = Integer.valueOf(thisSplit[2]);
//
//                         if (i + 1 <= lastYearList.size()) {
//                             StatisticsVo lastVo = lastYearList.get(i);
//                             String[] lastSplit = lastVo.getTitle().split("-");
//                             Integer lastDayInteger = Integer.valueOf(lastSplit[2]);
//                             if (thisDayInteger > lastDayInteger) {
//                                 StatisticsVo statisticsVo2 = new StatisticsVo();
//                                 statisticsVo2.setTitle(thisSplit[0] + "-" + thisSplit[1] + "-" + lastDayInteger);
//                                 statisticsVo2.setAmount(0);
//                                 thisYearList.add(i, statisticsVo2);
//                             } else if (thisDayInteger < lastDayInteger) {
//                                 StatisticsVo statisticsVo2 = new StatisticsVo();
//                                 statisticsVo2.setTitle(lastSplit[0] + "-" + lastSplit[1] + "-" + thisDayInteger);
//                                 statisticsVo2.setAmount(0);
//                                 lastYearList.add(i, statisticsVo2);
//                             }
//                         }
//                     }
//
//                 }
//             }
//         }
//         Map<String,Object> map= new HashMap<>();
//         map.put("thisYear",thisYearList.toArray(new Object[]{}));
//         map.put("lastYear",lastYearList.toArray(new Object[]{}));
//
//         return ResponseEntity.ok(map);
//     }
//
//     public ResponseEntity<Object> users(Long sd, Long ed, Integer type) {
//
//     }
// }
